package fiuba.algo3.vista;

import javax.swing.JDesktopPane;
import javax.swing.JInternalFrame;

import fiuba.algo3.control.Controlador;

@SuppressWarnings("serial")
public class Game extends JInternalFrame{

	JFPrincipal principal;
	final int MIZQUIERDO = 200;
	private Controlador controlador;
	private JDesktopPane fondo;
	private Botonera botonera;
	private Mapita mapita;
	private DatosDeJuego datos;
	private int maxWidth;
	private int maxHeight;
	
	public Game(int margenSuperior,int margenIzquierdo, int maxWidth,int maxHeight,Controlador controlador,JFPrincipal principal){
		
		this.principal = principal;
		this.controlador = controlador;
		this.maxHeight = maxHeight;
		this.maxWidth = maxWidth;
		
		//crear datos del juego
		datos = new DatosDeJuego(controlador);
		datos.setBounds(0,350,200,100);
		datos.setVisible(true);
		this.add(datos);

		//crea una botonera
		crearBotonera(0,0,MIZQUIERDO,maxHeight,principal);
		
		//crea un miniMapa
		crearMapa();
		
		
		//crear fondo
		crearFondo();

		//elimar bordes y northPane
		this.setBorder(null);
		javax.swing.plaf.InternalFrameUI ifu= this.getUI();
		((javax.swing.plaf.basic.BasicInternalFrameUI)ifu).setNorthPane(null);

		
		this.setBounds(margenIzquierdo,margenSuperior,maxWidth,maxHeight);
		this.setVisible(true);
		this.setResizable(false);
		this.setMaximizable(false);
	
	}
	
	private void crearBotonera(int margenIzquierdo,int margenSuperior,int width,int height,JFPrincipal principal){
		botonera = new Botonera(principal,controlador);

		botonera.setResizable(false);
		botonera.setMaximizable(false);
		botonera.setBounds(margenIzquierdo,margenSuperior,width,height);
		botonera.setVisible(true);
		
		this.add(botonera);
	}
	
	public void crearMapa(){
		mapita = new Mapita(200,0,maxWidth-200,maxHeight,principal,controlador);
		mapita.setVisible(true);
		mapita.setResizable(false);
		mapita.setMaximizable(false);
		this.add(mapita);		
	}
	
	private void crearFondo() {
		fondo = new JDesktopPane();
		fondo.setVisible(false);
		add(fondo);
	}

	public void actualizar(){
		mapita.actualizar();		
	}

	public void actualizarDatosDeJuego(){
		datos.actualizarDatos(controlador);
	}
}
